/**
 * 连接数据库
 */
const { Sequelize } = require("sequelize");
const { DB_HOST, DB_USER, DB_PASSWORD, DB_NAME, DB_PORT } = require("dotenv").config().parsed;

// 创建连接
const sequelize = new Sequelize(DB_NAME, DB_USER, DB_PASSWORD, {
  host: DB_HOST,
  port: DB_PORT,
  dialect: "mysql",
  dialectOptions: {
    dateStrings: true,
    typeCast: true,
  },
  timezone: "+08:00",
});

// 全局设置：在查询时自动排除已删除的数据
sequelize.addHook("beforeFind", (options) => {
  // 如果没有显式设置 paranoid: false，则自动添加条件排除已删除记录
  // if (options.paranoid !== false) {
  //   options.where = {
  //     ...options.where,
  //     delete_time: null, // 排除 delete_time 不为 NULL 的记录
  //   };
  // }
  // 不返回 delete_time 字段
  if (!options.attributes) {
    options.attributes = { exclude: ["delete_time"] }; // 如果没有显式设置 attributes，默认排除 delete_time 字段
  } else {
    options.attributes.push("delete_time"); // 确保 delete_time 不会被包含
  }
});

// 检查连接
const checkConnection = async () => {
  try {
    await sequelize.authenticate();
    console.log("连接已成功建立。");
  } catch (error) {
    console.error("无法连接到数据库：", error);
  }
};
checkConnection();

module.exports = sequelize;
